import { IPSSysDBScheme } from '../../database/ipssys-dbscheme';
import { IPSSysDBTable } from '../../database/ipssys-dbtable';
import { IPSDELogicNode } from './ipsdelogic-node';
import { IPSDELogicParam } from './ipsdelogic-param';

/**
 *
 * 继承父接口类型值[SYSDBTABLEACTION]
 * @export
 * @interface IPSDESysDBTableActionLogic
 */
export interface IPSDESysDBTableActionLogic extends IPSDELogicNode {
  /**
   * 数据表操作
   * @description 值模式 [系统数据库表操作] {CREATE：建立、 UPDATE：更新、 READ：获取、 DELETE：删除 }
   * @type {( string | 'CREATE' | 'UPDATE' | 'READ' | 'DELETE')}
   */
  dBTableAction: string | 'CREATE' | 'UPDATE' | 'READ' | 'DELETE';

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get dstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 数据库体系
   *
   * @type {IPSSysDBScheme}
   */
  getPSSysDBScheme(): IPSSysDBScheme | null;

  /**
   * 数据库体系
   *
   * @type {IPSSysDBScheme}
   */
  get psSysDBScheme(): IPSSysDBScheme | null;

  /**
   * 数据库体系（必须存在）
   *
   * @type {IPSSysDBScheme}
   */
  getPSSysDBSchemeMust(): IPSSysDBScheme;

  /**
   * 数据表
   *
   * @type {IPSSysDBTable}
   */
  getPSSysDBTable(): IPSSysDBTable | null;

  /**
   * 数据表
   *
   * @type {IPSSysDBTable}
   */
  get psSysDBTable(): IPSSysDBTable | null;

  /**
   * 数据表（必须存在）
   *
   * @type {IPSSysDBTable}
   */
  getPSSysDBTableMust(): IPSSysDBTable;
}
